package com.zwj.interview.二进制;

/**
 * @Author: Zwj
 * @Date: 2022/9/15 16:30
 */
public class MathmaticOperation {

    //汉明距离:你返回 n 的二进制表示中有几个 1
    int hammingWeight(int n) {
        int res = 0;
        //每一次使用n&(n-1)将n最右边的1变为0，直到变为0为止
        while (n != 0) {
            n = n & (n - 1);
            res++;
        }
        return res;
    }

    //一个数如果是2的指数，那么它的二进制表示一定只含有一个 1
    boolean isPowerOfTwo(int n) {
        if (n <= 0) return false;
        return (n & (n - 1)) == 0;
    }
}